<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
  // 数学运算符
  // + - * / % **

  // 1. +号
  // 1.1 数学的相加
  // 如果加号两边没有字符串，那么就会做加法运算
  // 会先将加号两边的值转成数字，再进行相加
  // console.log(10 + 20); // 30
  // console.log(10 + true); // 11
  // console.log(10 + false); // 10
  // console.log(10 + undefined); // NaN
  // console.log(10 + null); // 10
  // console.log(true + false); // 1

  // 在一些小数的运算里面，js会出现一些小误差
  // 因为IEEE 754二进制浮点数算术标准， 处理浮点数的时候会出现误差
  // console.log(0.2 + 0.4);


  // 1.2 字符串拼接
  // 只要加号的一边出现了字符串，就变成了字符串的拼接
  // 会先将不是字符串的部分先转成字符串
  // console.log("abc" + true);
  // console.log(true + null);
  // console.log("0" + 0);
  // console.log(true + 5 + "hi" + null);



  // 1.3 正号，将数据转成数值类型
  // console.log(+"abc");
  // console.log(+"123abc");
  // console.log(+true);
  // console.log(+undefined);
  // console.log(+null);
  // console.log(+"");






  // 2. - * /
  // 这三个符号都只能做数学运算
  // 优先将-*/两边的值都转成数字，再做运算
  // console.log(5 - 3);
  // console.log(5 - "3");
  // console.log(5 - "a");
  // console.log(5 * "3");
  // console.log(5 * "a");
  // console.log(typeof (true * "7"));





  // 3. %
  // 会执行取余运算(取模)
  // 也会先转成数字，在做运算
  // console.log(9 % 2); // 1
  // console.log(9 % 3); // 0
  // console.log(9.4 % 4); // 1
  // console.log(9 % 5); // 4
  // console.log(3 % 9); // 3




  // 4. **
  // 幂（**）运算符返回第一个操作数取第二个操作数的幂的结果
  // console.log((true + true) ** "10")
  // console.log(Math.pow(2, 10))







</script>